package com.ato.IO;

import org.junit.Test;

import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;

/**
 * @author wangjing
 * @create 2021--12--16--20:56
 * 1：既可以输入 又可以输出
 * 2：输出时，和其他一样，没有的话就可以帮你创建，但是如果有，那么就是从头覆盖：有多少覆盖多少
 * 3：直接就继承Object 而不是继承与四个基类流
 * 4：实现了DataInput DataOutput
 *
 * 参数的理解
 * 1： r ： 读
 * 2： rw :可读可写
 * 3:rwd 打开以便读取和写入，同步文件内容的更新
 * 4:rws 打开以便读取和写入，同步文件内容和元数据更新
 *
 * 在指定位置插入
 *
 */
public class RandomAccessFileTest {
    @Test
    public void te() {
        RandomAccessFile randomAccessFile = null;
        RandomAccessFile randomAccessFile2 = null;
        try {
            randomAccessFile = new RandomAccessFile(new File("testBuffer.mp4"), "r");
            randomAccessFile2 = new RandomAccessFile(new File("randomAccessFile.mp4"), "rw");
            byte[] cbuf = new byte[1024];
            int len;
            while ((len = randomAccessFile.read(cbuf)) != -1) {
                randomAccessFile2.write(cbuf, 0, len);

            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (randomAccessFile != null) {
                try {
                    randomAccessFile.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (randomAccessFile2 != null) {
                try {
                    randomAccessFile2.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
